using UwinEducation.Application.Dtos;
using UwinEducation.Shared.Models;

namespace UwinEducation.Application.Common.Interfaces
{
    /// <summary>
    /// 教师服务接口
    /// </summary>
    public interface ITeacherService
    {
        /// <summary>
        /// 获取教师分页列表
        /// </summary>
        Task<PagedResult<TeacherDto>> GetPagedListAsync(TeacherPageRequest pageRequest);

        /// <summary>
        /// 获取教师分页列表（按是否有排课排序）
        /// </summary>
        /// <param name="pageRequest">分页请求参数</param>
        Task<PagedResult<TeacherDto>> GetPagedListWithScheduleStatusAsync(TeacherAvailabilityPageRequest pageRequest);

        /// <summary>
        /// 获取教师详情
        /// </summary>
        Task<TeacherDto> GetByIdAsync(Guid id);

        /// <summary>
        /// 创建教师
        /// </summary>
        Task<TeacherDto> CreateAsync(CreateTeacherDto input);

        /// <summary>
        /// 更新教师
        /// </summary>
        Task<TeacherDto> UpdateAsync(UpdateTeacherDto input);

        /// <summary>
        /// 删除教师
        /// </summary>
        Task DeleteAsync(Guid id);
    }
}